package interfaces;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

public interface PointerReader {
	
	/**
	 * Returns the pointer factory associated with the reader.
	 * @return Factory responsible for instantiating pointer objects.
	 */
	public PointerFactory getFactory();
	
	/**
	 * Returns all pointer objects located at the given offsets.
	 * @return List of all pointers.
	 * @throws FileNotFoundException 
	 * @throws IOException 
	 */
	public HashMap<Integer, Pointer> getPointers() 
									throws FileNotFoundException, IOException;
	
	/**
	 * Checks formatting on reader data.
	 * @return True if reader can produce valid pointers, otherwise false.
	 */
	public ArrayList<ErrorReport> isValid();
	
}
